#ifndef ENGINE_H
#define ENGINE_H

#include "VideoDevice.h"
#include "Input.h"
#include "GUI.h"
#include "SoundManager.h"
#include "Settings.h"

namespace Cvekas {

/// Monostate which tracks fundamental engine services
class Engine
{
public:
	Engine() {};

	VideoDevicePtr getVideoDevice();
	SoundManagerPtr getSoundManager();
	InputPtr getInput();
	GUIPtr getGUI();
	SettingsPtr getSettings();

private:
	static VideoDevicePtr video_device;
	static SoundManagerPtr sound_manager;
	static InputPtr input;
	static GUIPtr gui;
	static SettingsPtr settings;

	friend class Application;
};

} // namespace

#endif